[Android] Navigation componentのツールバーの戻るを制御する
はじめに
Navigation componentでDrawerとToolbar連動したときに、どこに遷移しても戻るボタンに変わってしまい、どのページでもDrawerをメニューを開きたいときがありますよね。
Drawerから遷移するとバックボタンになってしまう
ハンバーガーアイコンをDrawerから遷移してもハンバーガーのままでいてほしい
今日はその設定の小ネタです。
基本的なNavigation componentのセットアップは公式ドキュメントを参照。
設定の仕方
プロジェクの全体のサンプルは以下を参照
AppBarConfigurationを設定する際にtopLevelDestinationIdsを設定することができます。これをNavigation Graphを設定するとstartDestinationで設定したもののみハンバーガーアイコンが表示されます。遷移後もDrawerメニューを表示したいときは、表示したいDestinationを指定することができます。
class MainActivity : AppCompatActivity(R.layout.activity_main) { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val navController = findNavController((R.id.nav_host_fragment)) // トップレベルを設定することで、設定したものはハンバーガーアイコンをだす val appBarConfiguration = AppBarConfiguration(setOf(R.id.menu1, R.id.menu2, R.id.menu3), drawer_layout) // トップレベルがスタートにあたっているものだけなので、どこかに遷移するとすべてバックボタン // val appBarConfiguration = AppBarConfiguration(navController.graph, drawer_layout) nav_view.setupWithNavController(navController) toolbar.setupWithNavController( navController, appBarConfiguration ) } }
あとがき
僕はこれで少しハマりましたので備忘録として。